#include<stdio.h>

/*c语言指针学习第7课：void类型指针*/

void swap(void *p1, void *p2, int len)//交换两个指针中的内容
{
    char *pc1 = p1;//把void类型的指针，转换成char类型的指针
    char *pc2 = p2;

    char temp = 0;

    for (int i = 0; i < len; i++)//以字节为单位，一个字节一个字节的进行交换。
    {
        temp = *pc1;
        *pc1 = *pc2;
        *pc2 = temp;

        pc1++;
        pc2++;
    }
    
}

int main()
{
    int a = 10;
    short b = 22;

    int *p1 = &a;
    short *p2 = &b;//与数值类型保持一致

    printf("%d\n",*p1);
    printf("%d\n",*p2);

    //char *p3 = p1;        //会警告，程序会自动进行强转换
    void *P4 = p1;
/*
    不同类型的指针之间，是不能互相赋值的
    void类型的指针打破上面的观念
    void没有任何类型，好处是可以接受任何类型指针记录的内存地址

    缺点：void类型的指针，无法获取变量中的数据，也不能进行加减计算。
*/
    long long X = 111LL;
    long long Y = 222LL;

    swap(&X,&Y,sizeof(int));

    printf("X=%lld,Y=%lld\n",X,Y);

    return 0;
}